מבוא לתכנות ב- JAVA מעבדה 2
מה בתרגול טיפוסים פרימיטיביים המרות טיפוסים אופרטורים יחסיים ולוגיים משפט if-else
בתרגול הקודם טיפוסים פרימיטביים לייצוג מספרים שלמים וממשיים ואופרטורים לפעולות בין מספרים.1 טיפוסים לייצוג מספרים שלמים- byte, short, int, long דוגמא: long longnum, longnum2; byte bytenum = 125; longnum = 1234567890; double doublenum; doublenum = 3.75;.2 טיפוסים ממשיים: double, float דוגמא:.3 אופרטורים אריתמטיים: % /, *, -, :+,
דוגמה public class OperatorsExample { public static void main(string[] args) { int a = 5; int b = a / 2; double c = 5.0; double d = c / 2.0; System.out.println( b = " + b); System.out.println( d = " + d); מה יודפס?
תרגיל לפניכם קטע קוד לקליטת 3 מספרים מהמשתמש. העתיקו אותו והשלימו אותו כך שיודפס למסך סכום ספרות האחדות של המספרים שנקלטו import java.util.scanner; public class Ex2 { public static void main(string[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextint(); int y = sc.nextint(); int z = sc.nextint(); קוד לקליטת שלושה מספרים מהמשתמש int sol = (x % 10) + (y%10)+ (z%10); System.out.println("The השלימו את הקוד כאן solution is "+sol); דוגמא: אם נקלטו המספרים 511,23,177 אזי המספר שיודפס למסך הוא 11
המרת טיפוס )Casting( לכל משתנה ב Java יש טיפוס ספציפי. מה קורה כאשר מערבים טיפוסים שונים בביטוי? במקרים מסוימים Java מטפלת בטיפוסים השונים באופן אוטומטי ובפעמים אחרות אנחנו חייבים לבצע המרה מפורשת של טיפוס נתונים אחד לאחר. 6
המרת טיפוס אוטומטית Implicit (Automatic) Casting כאשר מרכיבי הביטוי הינם מטיפוסים שונים הביטוי המתקבל יהיה מהטיפוס של המרכיב הכולל ביותר. הסדר של טיפוסים המספרים מן הפחות כולל לכולל ביותר הינו:.byte, short, int, long, float, double עובד אחרת בהתאם לטיפוסים עליהם הוא מופעל. 5.0/2 --> 2.5 5.0/2.0 --> 2.5 5/2.0 --> 2.5 5/2 --> 2 האופרטור / 7
המרת טיפוס אוטומטית ניתן לבצע המרת טיפוס ע"י שימוש בפעולת השמה. הביטוי הימני עובר המרה לטיפוס של המשתנה המופיע בצד שמאל של ההשמה. int i = 5; double d; d = i; // d is 5.0 המרה כזו אפשרית רק כאשר הטיפוס של המשתנה בצד שמאל יותר מהטיפוס של הביטוי בצד ימין. כללי 8
המרת טיפוס מפורשת Explicit Casting במקרה ההפוך, כאשר הטיפוס של המשתנה בצד שמאל כללי פחות מהטיפוס של הביטוי בצד ימין, נשתמש באופרטור ה type.(<type>) :cast double d = 5.3; int i ; i = (int) d; // i is 5 שימוש נוסף באופרטור ה type cast הוא כאשר רוצים למנוע איבוד של חלק השבר בחלוקה של מספרים שלמים: double d; int x = 5, y = 2 ; d = ((double) x)/y; d = (double) x/y; 9
טיפוסים פרימיטיביים נוספים 3. טיפוסים לוגיים הטיפוס הלוגי נקרא.boolean או.false משתנים מטיפוס זה בעלי ערך true boolean indicator; indicator = true; 4. תווים תו:.char סימן בודד התחום בגרשיים בודדות )למשל, 'A','a'(. לפני סימן מיוחד יש תו backslash )למשל, 'n\' tab,newline ) backspace '\b', '\t' char capitaln; capitaln = 'N'; 10
אופרטורים יחסיים Java יש 6 אופרטורים המשווים בין שני מספרים ונותנים תשובה בוליאנית.)false או true( ב Operator Name Description x < y Less than true if x is less than y, otherwise false. x > y Greater than true if x is greater than y, otherwise false. x <= y x >= y Less than or equal to Greater than or equal to true if x is less than or equal to y, otherwise false. true if x is greater than or equal to y, otherwise false. x == y Equal true if x equals y, otherwise false. x!= y Not Equal true if x is not equal to y, otherwise false. 11
דוגמה import java.util.scanner; public class RelationalOp { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter the first number:"); int x = sc.nextint(); System.out.print("Enter the second number:"); int y = sc.nextint(); boolean cmpgt = (x > y); boolean cmpeq = (x == y); boolean cmpneq = (x!= y) ; System.out.println( x is greater than y?" + cmpgt); System.out.println( x is equal to y?" + cmpeq); System.out.println( x is not equal to y?" + cmpneq); System.out.println( x is less than or equal y?" + (x <= y)); 12
אופרטורים לוגיים אופרטורים לוגיים פועלים על ערכים מטיפוס לוגי נותנים תשובה בוליאנית true( או.)false וגם )בוליאני( Operator Name Description x && y And True if both x and y are true, otherwise false. x y Or True if at least one of x or y are true, otherwise false.! x Not True if x is false, otherwise false. 13
דוגמה import java.util.scanner; // This program demonstrates logical operators. // It reads two integers from the user and checks if // they are larger than 10. public class LogicalOperators { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter the first number:"); int x = sc.nextint(); System.out.print("Enter the second number:"); int y = sc.nextint(); System.out.println("(y<10)&&(x<10) is " + ((y<10) && (x<10))); System.out.println("(y<10) (x<10) is " + ((y<10) (x<10))); boolean state; state = ((y < 10) (x < 10)); System.out.println("state is " + state); Enter the first number:10 Enter the second number:9 (y<10)&&(x<10) is false (y<10) (x<10) is true state is true 14
משפט if-else משפט if-else הוא מבנה בסיסי בשפה המאפשר לשלוט בזרימת התוכנית. למשפט זה יש שתי צורות: if (<condition>){ <statement> if (<condition>){ <statement> else { <alternative> 15
דוגמה ל- if import java.util.scanner; public class Triangle { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter the first number:"); double a = sc.nextint(); System.out.print("Enter the second number:"); double b = sc.nextint(); System.out.print("Enter the third number:"); double c = sc.nextint(); if ((a + b <= c) (a + c <= b) (b + c <= a)){ System.out.println("There is no triangle with these sides."); else{ System.out.println("There is a triangle with these sides."); 16
תרגיל 1 כתוב תוכנית המקבלת: 5 מספרים בסדר עולה a1,a2,,a5 כך ש a1 <= a2 <= a3 <= a4 <= a5 ערך לחיפוש x )מספר נוסף(. התוכנית תבדוק האם x הוא אחד מ- 5 המספרים שנקלטו ותדפיס פלט בהתאם. על התוכנית לבצע לכל היותר 4 פעולות השוואה במהלך הריצה!=( <=,, => >,, < )==, דוגמאות: עבור הקלט 1,2,3,4,5 ו- 2=x התוכנית תחזיר.true עבור הקלט 2,3,5,7,11 ו 4=x התוכנית תחזיר false
פתרון "פשוט" ולא עומד בדרישות import java.util.scanner; public class Exercise1{ public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("insert 5 numbers"); int a1 = sc.nextint(); int a2 = sc.nextint(); int a3 = sc.nextint(); int a4 = sc.nextint(); int a5 = sc.nextint(); System.out.println("choose value to search"); int x = sc.nextint(); boolean found = false; if (x == a1 x == a2 x == a3 x == a4 x == a5) found = true; System.out.println("answer is " + found);
פתרון נוכל לנצל את העובדה שהקלט ממויין. נשווה את x לערך האמצעי. a3 מקרה א: אם x < a3 אין צורך לבדוק בכלל האם או a2 שווה ל a1 x לכן נבדוק האם.x=a4,a5 מקרה ב: אחרת x הוא לפחות בגודל של a3 ולכן נותר לבדוק האם הוא שווה לa3,a4,a5 סה"כ: 4 השוואות לכל היותר
פתרון import java.util.scanner; public class Exercise1{ public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("insert 5 numbers"); int a1 = sc.nextint(); int a2 = sc.nextint(); int a3 = sc.nextint(); int a4 = sc.nextint(); int a5 = sc.nextint(); System.out.println("choose value to search"); int x = sc.nextint(); boolean found = false; if (x < a3){ if (x == a1 x == a2){ found = true; else if (x == a3 x == a4 x == a5){ found = true; System.out.println("answer is " + found);
תרגיל 2 כתבו תוכנית הקולטת 4 מספרים ומדפיסה את המספר השני הכי קטן. דוגמא: עבור הקלט 1,5,0-,3.הפלט שיודפס למסך הוא: Second minimum is 0
פתרון import java.util.scanner; public class Exercise2{ public static void main(string[] args){ Scanner sc = new Scanner(System.in); int a = sc.nextint(); int b = sc.nextint(); int c = sc.nextint(); int d = sc.nextint(); int min; int secondmin; if (a < b){ min = a; secondmin = b; else { min = b; secondmin = a; המשך בעמוד הבא
פתרון if (min > c){ secondmin = min; min = c; else if (secondmin > c){ secondmin = c; if (min > d){ secondmin = min; min = d; else if (secondmin > d){ secondmin = d; System.out.println("Second minimum is " + secondmin);